<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
         class Father {
            // constructor() {
            //     console.log("father 的无参构造方法");
            // }
            // 1. 类中只能有一个构造函数。
            // js 太灵活，函数中少传递参数，不报错。因此无法判断调用的哪一个构造函数。
            constructor(x, y) {
                this.x = x;
                this.y = y;
                console.log("father 的有参构造方法");
            }
            look() {
                console.log("爸爸看报纸");
            }
            play(ball) {
                console.log("father 在球场玩" + ball);
            }
            address = "郑州";
        }
        class Son extends Father {
            constructor(x, y) {
                // 3. 调用父类的无参构造函数。
                // super();
                // 4. 调用父类的有参构造函数
                super(x, y);
            }
            computerGames() {

                // 2. 调用父类的普通方法
                super.look();
                super.play('篮球');

                console.log("son 喜欢打王者荣耀");
                // 3.只能在子类中的构造函数中调用父类的构造函数
                //    构造函数的目的是给对象初始化，并返回对象，在普通函数调用父类的构造函数没有意义。
                // super(); 
            }

            address = "南京";
        }
        var son = new Son();
        son.computerGames();
    </script>
</body>
</html>